
// 模拟JQ中AJAX的封装
var xhr = (function(){   // ( function() )  立即执行函数，也可以避免全局污染
  var o = window.XMLHttpRequest ?
          new XMLHttpRequest : new ActiveXObject('Microsoft.XMLHTTP');
  if (!o ) {
  //抛出异常
  throw new Error('您的浏览器不支持异步发起HTTP请求')
  }

  function _doAjax(opt){
    var opt = opt || {},    //  ||与| 都是‘或’，|| 只需满足一个条件，后面不判断
    type = ( opt.type || 'GET' ).toUpperCase(),
    async = opt.async || true
    url = opt.url,
    data = opt.data || unll,
    error = opt.error || function(){},
    success = opt.success || function(){},
    complete = opt.complete|| function(){};

    if(!url){
      throw new Error('您没有填写URL');
    }

    o.open(type,url,async);
    type === 'POST' && o.setRequestHeader('Content-type',
                          'application/x-www-form-urlencoded');
    o.send(type === 'GET' ? null : formatDatas(data));

    o.onreadystatechange = function(){
      if(o.readyState === 4 && o.status === 200){
        success(JSON.parse(o.responseText));
      }
      if(o.status === 400){
        error();
      }
    complete();
    }
  }

  function formatDatas(obj){
    var str = '';
    for(var key in obj){
      str =+ key + '=' + obj[key] + '&' ;
    }
    return str.replace(/&$/, '');
  }

  return {
    ajax: function(opt){
      _doAjax(opt);
    },
    
    post: function(url,data,callback){
      _doAjax({
        type: 'POST',
        url: url,
        data: data,
        success: callback
      });
    },

    get: function(url,callback){
      _doAjax({
        type:'GET',
        url: url,
        success: callback
      })
    }
  }
})();




// 调用自己封装的AJAX   AJAX引用了JQ可以调用$, 没JQ而需要AJAX时需要自己封装 
// $.ajax({
//   type: 'POST',
//   url: 'http://www.baidu.com',
//   data: {
//     status: 1,
//     flag: 2
//   },
//   success: function(data){
//     console.log(data)
//   }
// });

// $.post('htp://www.baidu.com',{
//   status: 1,
//   flag: 2
// },function(data){
//   console.log(data);
// });

xhr.get('htp://www.baidu.com?status=1&flag=2',
function(data){
  console.log(data);
});


 